import hmac
from gmssl import sm3

# key = b"secret"
# data = b"Hello, Linge!"
# # 支持sm3.也可以测试md5等。同时这是依赖于openssl的sm3.
# hmac_value = hmac.new(key, data, digestmod="sm3").hexdigest()
# print(hmac_value)

# 获取一个sm4密钥
# 使用sm3密钥扩展，扩展出一个位数大于sm3输出值的密钥值，避免穷举密钥攻击
# 使用hmac实现HMAC功能
key = b"1234567812345678"
new_key_len = 48  # 派生16字节的密钥
new_key_hex = sm3.sm3_kdf(key, new_key_len)
print("派生的密钥:", new_key_hex)

# 使用扩展的新密钥来实现基于SM3的HMAC功能
new_key = bytes.fromhex(new_key_hex)
data = b"hello world"
hmac_value = hmac.new(new_key, data, digestmod="sm3").hexdigest()
print("hmac_value: ", hmac_value)

key02 = bytes.fromhex("d1083c672f52c860b6a3eb841cba39694cec0a60d8c3a515ce53f727ddb86d8f569554519ba8d9c1eecec7e1777d2a03")
hmac_value02 = hmac.new(key02, data, digestmod="sm3").hexdigest()
print("hmac_value02: ", hmac_value02)
